package priv.xakml.toolkit;


import java.security.MessageDigest;

/**
 * 计算哈希值的基础方法
 */
class HashBase {
    /**
     *
     * @param m
     * @param source_data 原始数据字符串(无任何编码)
     * @return 散列后数据的十六进制表示形式
     */
    protected String computeHashToHexString(MessageDigest m, byte[] source_data) {
        //m.update(source_data);
        byte[] result = computeHashToBytes(m,source_data); //m.sha1_digest();
        return  BinaryConverter.toHexString(result);
    }

    /**
     * 计算指定数据的散列值
     * @param m 已实现的hash计算方案
     * @param source_data 原始数据
     * @return
     */
    protected byte[] computeHashToBytes(MessageDigest m, byte[] source_data) {
        m.update(source_data);
        byte[] result = m.digest();
        return result;
    }
}
